package com.supos.uns.util;

import com.google.common.collect.Sets;

import java.util.Set;

/**
 * @author sunlifang
 * @version 1.0
 * @description: TODO
 * @date 2025/1/13 14:23
 */
public class TdEngineKeyWord {
    private static Set<String> keyWords = Sets.newHashSet(new String[]{"ABORT",
            "ACCOUNT",
            "ACCOUNTS",
            "ADD",
            "AFTER",
            "AGGREGATE",
            "ALIAS",
            "ALIVE",
            "ALL",
            "ALTER",
            "ANALYZE",
            "AND",
            "ANODE",
            "ANODES",
            "ANOMALY_WINDOW",
            "ANTI",
            "APPS",
            "ARBGROUPS",
            "ARROW",
            "AS",
            "ASC",
            "ASOF",
            "AT_ONCE",
            "ATTACH",
            "BALANCE",
            "BEFORE",
            "BEGIN",
            "BETWEEN",
            "BIGINT",
            "BIN",
            "BINARY",
            "BITAND",
            "BITAND",
            "BITNOT",
            "BITOR",
            "BLOB",
            "BLOCKS",
            "BNODE",
            "BNODES",
            "BOOL",
            "BOTH",
            "BUFFER",
            "BUFSIZE",
            "BWLIMIT",
            "BY",
            "CACHE",
            "CACHEMODEL",
            "CACHESIZE",
            "CASE",
            "CAST",
            "CHANGE",
            "CHILD",
            "CLIENT_VERSION",
            "CLUSTER",
            "COLON",
            "COLUMN",
            "COMMA",
            "COMMENT",
            "COMP",
            "COMPACT",
            "COMPACTS",
            "CONCAT",
            "CONFLICT",
            "CONNECTION",
            "CONNECTIONS",
            "CONNS",
            "CONSUMER",
            "CONSUMERS",
            "CONTAINS",
            "COPY",
            "COUNT",
            "COUNT_WINDOW",
            "CREATE",
            "CREATEDB",
            "CURRENT_USER",
            "DATABASE",
            "DATABASES",
            "DBS",
            "DECIMAL",
            "DEFERRED",
            "DELETE",
            "DELETE_MARK",
            "DELIMITERS",
            "DESC",
            "DESCRIBE",
            "DETACH",
            "DISTINCT",
            "DISTRIBUTED",
            "DIVIDE",
            "DNODE",
            "DNODES",
            "DOT",
            "DOUBLE",
            "DROP",
            "DURATION",
            "EACH",
            "ELSE",
            "ENABLE",
            "ENCRYPT_ALGORITHM",
            "ENCRYPT_KEY",
            "ENCRYPTIONS",
            "END",
            "EQ",
            "EVENT_WINDOW",
            "EVERY",
            "EXCEPT",
            "EXISTS",
            "EXPIRED",
            "EXPLAIN",
            "FAIL",
            "FHIGH",
            "FILE",
            "FILL",
            "FILL_HISTORY",
            "FIRST",
            "FLOAT",
            "FLOW",
            "FLUSH",
            "FOR",
            "FORCE",
            "FORCE_WINDOW_CLOSE",
            "FROM",
            "FROWTS",
            "FULL",
            "FUNCTION",
            "FUNCTIONS",
            "GE",
            "GEOMETRY",
            "GLOB",
            "GRANT",
            "GRANTS",
            "GROUP",
            "GT",
            "HAVING",
            "HEX",
            "HOST",
            "ID",
            "IF",
            "IGNORE",
            "ILLEGAL",
            "IMMEDIATE",
            "IMPORT",
            "IN",
            "INDEX",
            "INDEXES",
            "INITIALLY",
            "INNER",
            "INSERT",
            "INSTEAD",
            "INT",
            "INTEGER",
            "INTERSECT",
            "INTERVAL",
            "INTO",
            "IPTOKEN",
            "IROWTS",
            "IS",
            "IS_IMPORT",
            "ISFILLED",
            "ISNULL",
            "JLIMIT",
            "JOIN",
            "JSON",
            "KEEP",
            "KEEP_TIME_OFFSET",
            "KEY",
            "KILL",
            "LANGUAGE",
            "LAST",
            "LAST_ROW",
            "LE",
            "LEADER",
            "LEADING",
            "LEFT",
            "LEVEL",
            "LICENCES",
            "LIKE",
            "LIMIT",
            "LINEAR",
            "LOCAL",
            "LOGS",
            "LP",
            "LSHIFT",
            "LT",
            "MACHINES",
            "MATCH",
            "MAX_DELAY",
            "MAXROWS",
            "MEDIUMBLOB",
            "MERGE",
            "META",
            "MINROWS",
            "MINUS",
            "MNODE",
            "MNODES",
            "MODIFY",
            "MODULES",
            "NCHAR",
            "NE",
            "NEXT",
            "NMATCH",
            "NONE",
            "NORMAL",
            "NOT",
            "NOTNULL",
            "NOW",
            "NULL",
            "NULL_F",
            "NULLS",
            "OF",
            "OFFSET",
            "ON",
            "ONLY",
            "OR",
            "ORDER",
            "OUTER",
            "OUTPUTTYPE",
            "PAGES",
            "PAGESIZE",
            "PARTITION",
            "PASS",
            "PAUSE",
            "PI",
            "PLUS",
            "PORT",
            "POSITION",
            "PPS",
            "PRECISION",
            "PREV",
            "PRIMARY",
            "PRIVILEGE",
            "PRIVILEGES",
            "QDURATION",
            "QEND",
            "QNODE",
            "QNODES",
            "QSTART",
            "QTAGS",
            "QTIME",
            "QUERIES",
            "QUERY",
            "QUESTION",
            "RAISE",
            "RAND",
            "RANGE",
            "RATIO",
            "READ",
            "RECURSIVE",
            "REDISTRIBUTE",
            "REM",
            "REPLACE",
            "REPLICA",
            "RESET",
            "RESTORE",
            "RESTRICT",
            "RESUME",
            "RETENTIONS",
            "REVOKE",
            "RIGHT",
            "ROLLUP",
            "ROW",
            "ROWTS",
            "RP",
            "RSHIFT",
            "S3_CHUNKPAGES",
            "S3_COMPACT",
            "S3_KEEPLOCAL",
            "SCHEMALESS",
            "SCORES",
            "SELECT",
            "SEMI",
            "SERVER_STATUS",
            "SERVER_VERSION",
            "SESSION",
            "SET",
            "SHOW",
            "SINGLE_STABLE",
            "SLASH",
            "SLIDING",
            "SLIMIT",
            "SMA",
            "SMALLINT",
            "SMIGRATE",
            "SNODE",
            "SNODES",
            "SOFFSET",
            "SPLIT",
            "STABLE",
            "STABLES",
            "STAR",
            "START",
            "STATE",
            "STATE_WINDOW",
            "STATEMENT",
            "STORAGE",
            "STREAM",
            "STREAMS",
            "STRICT",
            "STRING",
            "STT_TRIGGER",
            "SUBSCRIBE",
            "SUBSCRIPTIONS",
            "SUBSTR",
            "SUBSTRING",
            "SUBTABLE",
            "SYSINFO",
            "SYSTEM",
            "TABLE",
            "TABLE_PREFIX",
            "TABLE_SUFFIX",
            "TABLES",
            "TAG",
            "TAGS",
            "TBNAME",
            "THEN",
            "TIMES",
            "TIMESTAMP",
            "TIMEZONE",
            "TINYINT",
            "TO",
            "TODAY",
            "TOPIC",
            "TOPICS",
            "TRAILING",
            "TRANSACTION",
            "TRANSACTIONS",
            "TRIGGER",
            "TRIM",
            "TSDB_PAGESIZE",
            "TSERIES",
            "TSMA",
            "TSMAS",
            "TTL",
            "UNION",
            "UNSAFE",
            "UNSIGNED",
            "UNTREATED",
            "UPDATE",
            "USE",
            "USER",
            "USERS",
            "USING",
            "VALUE",
            "VALUE_F",
            "VALUES",
            "VARBINARY",
            "VARCHAR",
            "VARIABLE",
            "VARIABLES",
            "VERBOSE",
            "VGROUP",
            "VGROUPS",
            "VIEW",
            "VIEWS",
            "VNODE",
            "VNODES",
            "WAL",
            "WAL_FSYNC_PERIOD",
            "WAL_LEVEL",
            "WAL_RETENTION_PERIOD",
            "WAL_RETENTION_SIZE",
            "WAL_ROLL_PERIOD",
            "WAL_SEGMENT_SIZE",
            "WATERMARK",
            "WDURATION",
            "WEND",
            "WHEN",
            "WHERE",
            "WINDOW",
            "WINDOW_CLOSE",
            "WINDOW_OFFSET",
            "WITH",
            "WRITE",
            "WSTART"
    });

    public static boolean isKeyWord(String word) {
        if (word == null) {
            return false;
        }
        return keyWords.contains(word.toUpperCase().trim());
    }
}
